/**
 * Copyright (C) <2020>  <chen junwen>
 * <p>
 * This program is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * <p>
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 * <p>
 * You should have received a copy of the GNU General Public License along with this program.  If
 * not, see <http://www.gnu.org/licenses/>.
 */
package io.mycat.hbt4;

import java.util.PriorityQueue;
import java.util.concurrent.ConcurrentHashMap;

public enum PlanCache {
    INSTANCE;
    ConcurrentHashMap<String, PriorityQueue<Plan>> cache = new ConcurrentHashMap<>();

    public Plan getMinCostPlan(String sql) {
        PriorityQueue<Plan> plans = cache.computeIfAbsent(sql, s -> new PriorityQueue<>(Comparable::compareTo));
        if (plans.isEmpty()){
            return null;
        }else {
            return plans.poll();
        }
    }
    public void put(String sql,Plan plan){
        PriorityQueue<Plan> plans = cache.computeIfAbsent(sql, s -> new PriorityQueue<>(Comparable::compareTo));
        plans.add(plan);
    }

}